package bavaria.hightech.banking;

import bavaria.hightech.exceptions.BoniUeberzogenException;
import bavaria.hightech.geld.Money;
import bavaria.hightech.konditionen.FestgeldKonditionen.Laufzeit;
import bavaria.hightech.konditionen.GiroKonditionen;
import bavaria.hightech.konditionen.Konditionen;

public class GiroKonto extends Konto{
	
	public GiroKonditionen giroKon;
	
	public GiroKonto(int kn, String ki, GiroKonditionen giroKonditionen, Money money, String s){
		super(kn, money, ki, s, giroKonditionen);
		giroKon = giroKonditionen;
	}
	
	public GiroKonditionen.BoniGruppe getBoni(){
		return giroKon.bonGr;
	}
	
	public void abgang(Money money, String grund){
		if (money.betrag >= 0){
			try
			{
			if (super.kontostand.betrag - money.betrag >= -giroKon.boniBetrag.betrag)
				super.abgang(money, grund);
			else
				throw new BoniUeberzogenException();
			}
			catch (BoniUeberzogenException e){
				System.out.println("Bonität überschritten!");
			}
		}
		else
			System.out.println("Betrag falsch eingegeben!");
		
		
	}

	@Override
	public void verzinsen() {
		if (super.kontostand.betrag < 0){
			Money zinswert = new Money(-super.kontostand.betrag*giroKon.sz/100, kontostand.waehrung);
			abgang(zinswert, "Sollzins");
		}
		else {
			Money zinswert = new Money(super.kontostand.betrag*giroKon.hz/100, kontostand.waehrung);
			zugang(zinswert, "Habenzins");
		}
		
	}
	
	
	public String toString(){
		String s = "Kontotyp: Girokonto, " + super.toString() + " Habenzins: " + giroKon.hz + ", Sollzins: " + giroKon.sz;
		return s;
	}

	@Override
	public Konditionen getKondition() {
		return giroKon;
	}

	@Override
	public void verzinsen(Laufzeit lauf) {
		
	}

}
